import numpy as np

import numpy.random as npr
#模拟跳跃扩散过程
S0=100   #证券的初始价格
u=0.05   #证书收益率的均值
sigma=0.2 #证券收益率的方差
lamb=0.75  #跳跃强度
mu=-0.6   #预期跳跃均值
delta=0.25  #跳跃强度的标准差
T=1.0    #年化时间长度
M=252    #年化时间分段数目
I=10000  #模拟的次数
dt=T/M   #模拟的每小步步长

rj=lamb*(np.exp(mu+0.5*delta**2)-1)
S=np.zeros((M+1,I))
S[0]=S0
sn1=npr.standard_normal((M+1,I))
sn2=npr.standard_normal((M+1,I))
poi=npr.poisson(lamb*dt,(M+1,I))
for t in range(1,M+1,1):
    S[t]=S[t-1]*(np.exp((u-rj-0.5*sigma**2)*dt)+sigma*np.sqrt(dt)*sn1[t]+(np.exp(mu+delta*sn2[t])-1)*poi[t])
    S[t]=np.maximum(S[t],0)